package main

import "fmt"

//第一种变量声明方式-指定变量类型
var a int

//第二种变量声明方式-根据变量的值自动判断变量类型
var name = "苹果"

//布尔类型的默认值为false
var flag bool

func main() {
	//fmt.Print("a= ", a, "\n")
	//fmt.Println(reflect.TypeOf(name))
	//
	////第三种，省略var, 注意 :=左侧的变量不应该是已经声明过的，否则会导致编译错误,
	//// 注意，此种声明变量的方法只能在方法体内使用
	//age := 18
	//fmt.Println(age)
	//
	//fmt.Println(flag)

	//params()

	//printOnePeople()
	ch()
}

//同时声明多个全局变量，而且全局变量是允许声明但不使用
var name1, name2, name3 string = "张三", "李四", "王五"

//因式分解关键字的写法一般用于声明全局变量
var (
	username string = "王二小"
	age      int    = 18
	sex      string = "男"
)

func params() {
	//同时声明多个相同类型的变量
	var h, i, j int
	h, i, j = 1, 2, 3
	//以上的声明方法可以简写为
	x, y, z := 4, 5, 6

	fmt.Println("a变量的值为h=", h)
	fmt.Println("b变量的值为i=", i)
	fmt.Println("c变量的值为j=", j)
	fmt.Println("c变量的值为x=", x)
	fmt.Println("b变量的值为y=", y)
	fmt.Println("c变量的值为z=", z)
}

func printOnePeople() {
	println("姓名：\t", username)
	println("年龄：\t", age)
	println("性别：\t", sex)
}

func ch() {
	//尝试编译以下这段代码将得到错误 a declared and not used
	x := 3
	y := 5
	z := 6
}
